{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "e18b2d49",
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "27eb1194",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>0</th>\n",
       "      <th>1</th>\n",
       "      <th>2</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>NaN</td>\n",
       "      <td>3.0</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>-42.6</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-8.2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>-5.0</td>\n",
       "      <td>1.6</td>\n",
       "      <td>4.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      0    1    2\n",
       "0   NaN  3.0  5.0\n",
       "1 -42.6  NaN -8.2\n",
       "2  -5.0  1.6  4.0"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df1 = pd.DataFrame(\n",
    "    [[np.nan, 3.0, 5.0], [-4.6, np.nan, np.nan], [np.nan, 7.0, np.nan]]\n",
    ")\n",
    "\n",
    "\n",
    "df2 = pd.DataFrame([[-42.6, np.nan, -8.2], [-5.0, 1.6, 4]], index=[1, 2])\n",
    "\n",
    "result = df2.combine_first(df1)\n",
    "\n",
    "result"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "2f4a8b7e",
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "66b1938a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>name</th>\n",
       "      <th>toy</th>\n",
       "      <th>born</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaT</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Batman</td>\n",
       "      <td>Batmobile</td>\n",
       "      <td>1940-04-25</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Catwoman</td>\n",
       "      <td>Bullwhip</td>\n",
       "      <td>NaT</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       name        toy       born\n",
       "0       NaN        NaN        NaT\n",
       "1    Batman  Batmobile 1940-04-25\n",
       "2  Catwoman   Bullwhip        NaT"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = pd.DataFrame({\"name\": [np.nan, 'Batman', 'Catwoman'],\n",
    "                   \"toy\": [np.nan, 'Batmobile', 'Bullwhip'],\n",
    "                   \"born\": [pd.NaT, pd.Timestamp(\"1940-04-25\"),\n",
    "                            pd.NaT]})\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "22683faa",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>name</th>\n",
       "      <th>toy</th>\n",
       "      <th>born</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Batman</td>\n",
       "      <td>Batmobile</td>\n",
       "      <td>1940-04-25</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Catwoman</td>\n",
       "      <td>Bullwhip</td>\n",
       "      <td>NaT</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       name        toy       born\n",
       "1    Batman  Batmobile 1940-04-25\n",
       "2  Catwoman   Bullwhip        NaT"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.dropna(how=\"all\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "a41fb7d0",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "原始数据:\n",
      "  Student  Math  Science  English\n",
      "0       A    85       80       82\n",
      "1       B    78       74       76\n",
      "2       C    92       88       85\n",
      "3       D    88       90       87\n",
      "4       E    76       70       74\n",
      "5       F    90       85       88\n",
      "6       G    85       83       80\n",
      "7       H    89       87       84\n",
      "8       I    91       92       90\n",
      "9       J    77       78       79\n"
     ]
    }
   ],
   "source": [
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "# 创建示例数据\n",
    "data = {\n",
    "    'Student': ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'],\n",
    "    'Math': [85, 78, 92, 88, 76, 90, 85, 89, 91, 77],\n",
    "    'Science': [80, 74, 88, 90, 70, 85, 83, 87, 92, 78],\n",
    "    'English': [82, 76, 85, 87, 74, 88, 80, 84, 90, 79]\n",
    "}\n",
    "\n",
    "df = pd.DataFrame(data)\n",
    "print(\"原始数据:\")\n",
    "print(df)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "616bfe41",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\42082\\AppData\\Local\\Temp\\ipykernel_11388\\2683154009.py:2: MatplotlibDeprecationWarning: The seaborn styles shipped by Matplotlib are deprecated since 3.6, as they no longer correspond to the styles shipped by seaborn. However, they will remain available as 'seaborn-v0_8-<style>'. Alternatively, directly use the seaborn API instead.\n",
      "  plt.style.use('seaborn-darkgrid')\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAikAAAG8CAYAAAAb0DVzAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA6B0lEQVR4nO3deVxWZf7/8ffNIogiq1o5lX5VMBeUFPcFMZdKXDFt1HFJLcctJ801sdJcKist1FxbNMulxGR0Rpv6NblgPLRccsE1d1lEFhXwPr8/HO/pHjdQ7psjvJ6PBw/knOtc53NuLvDNdZbbYhiGIQAAAJNxKewCAAAAboWQAgAATImQAgAATImQAgAATImQAgAATImQAgAATImQAgAATImQAgAATImQAjjJg/LcxAelTtw/vtcwO0IKcB8OHjyokSNHqkmTJqpZs6aaNm2ql19+Wfv27bNrl5CQoBdffLFA9rl9+3YFBwdr+/btBdLfH23evFljxoy5a7vU1FRNmzZNTz31lGrWrKn69eurT58+2rhxY4HX5GwnT55UcHCw3UeNGjXUvHlzTZo0SSkpKU6po3fv3jfVUbNmTYWHh+v1119XWlqaXdvevXvnq/+CHJOAo7gVdgHAg+rQoUPq3r27QkJCNGHCBAUGBurs2bP6/PPP1b17d3322WeqU6eOJGnlypVKTEws3ILzYOnSpXdtc+XKFfXs2VO5ubkaOHCgKlasqPT0dP3973/X8OHDNW7cOPXt29fhtTra4MGDFR4eLkm6evWqjh49qjlz5igxMVHLly93Sg3Vq1dXdHS07eucnBzt3btXs2bN0m+//aYvvvhCFovlnvp+UMYkijdCCnCPlixZIl9fXy1cuFDu7u625U899ZSefvppxcTE6OOPPy7ECh1jw4YNOnz4sDZs2KBKlSrZlj/11FO6cuWK5syZo969e8vV1bUQq7x/jz32mC1kSlKDBg3k7u6u8ePH69ChQ6patarDayhdurRdDZIUFhamzMxMzZ49W7/88stN64GihNM9wD1KSkqSdPN5fS8vL40bN05PP/20JGns2LH6+uuvderUKQUHB2vNmjW2Uwpr1qyx23bs2LGKiIiwW7ZixQq1bdtWISEh6tWrl06fPn1TLadPn9bf/vY31a9fX7Vr11afPn3sTjnd2N+N2Y7Q0FCFhYVpwoQJyszMlHT9lEF8fLzi4+PveDrpdsctSS+++KL++te/Kjs727Zsz549GjBggOrWrauGDRtq5MiROnPmjG39+fPnNW7cOLVo0UIhISGKiorS5s2b7foNDg7Whx9+qK5du6pu3bqKiYnJ03FLUlxcnDp06KCQkBA1bNhQo0aN0vnz5295bHfj4+MjSXazF+np6bZTX7Vq1VL79u21atUq2/rNmzcrODhYc+bMsS07evSo6tSpk6dTa7dSs2ZNSbrlWJCuz/x89NFHateunWrVqqU2bdro448/ltVqlXTrMQmYESEFuEfh4eE6ffq0evTooWXLlunw4cO2/7jbtWunzp07S5L++te/qkWLFipbtqy+/PJL2ymEvPj8888VHR2tZs2aKSYmRrVr19Zrr71m1yYlJUU9evTQ3r179dprr+ndd9+V1WpVz549dfjwYbu20dHRqlChgmJiYjRgwACtXr1a8+bNs62rXr26qlevri+//FI1atS4ZU3NmjWTm5ub+vTpow8//FC7du1STk6OJCkkJEQvvPCCSpYsKUnav3+/nn/+eV2+fFnTp0/XG2+8oX379ql///7KyclRUlKSoqKiFB8fr5EjR2rOnDmqUKGChgwZotjYWLv9zp07V23bttWsWbPUqlWrPB13QkKCRo0apTZt2mjBggUaN26ctm3bpldeeeWur73ValVubq5yc3N15coV7d+/X3PnzlWDBg1UpUoVSddPff35z39WbGys+vfvr5iYGNWtW1cTJkywva6tWrVSp06dNH/+fB0+fFjXrl3T2LFj5e/vf9P3Mq+OHj0qSXr00UdvWmcYhl566SUtXLhQUVFRmjdvntq1a6f333/fdurofsYk4FQGgHv2/vvvG7Vq1TKCgoKMoKAgo0GDBsYrr7xi7Nq1y67dmDFjjJYtW9q+/v33342goCBj9erVt21ntVqNRo0aGcOGDbNrM2nSJCMoKMjYtm2bYRiGMWvWLKNWrVrGyZMnbW2uXr1qtGrVyrbtjf2NGjXKrq/evXsb7du3t33dq1cvo1evXnc97o0bNxqNGze2HXdISIjRv39/Y/369Xbthg0bZjRp0sS4cuWKbdkvv/xitGzZ0ti9e7cxc+ZMo0aNGsaJEyfstuvTp4/RpEkT49q1a4ZhGEZQUJDRo0cPuzZ5Oe758+cbderUsdv/999/b8yZM8ewWq23PLYbr9WtPurXr28cOHDA1nbZsmVGUFCQ8fPPP9v1MX78eKNWrVpGamqqYRiGkZaWZjRr1szo1auXMX/+fOOJJ54wduzYccfXuFevXkbPnj2NnJwc20dSUpIRFxdn1K9f33juuedsx/DH79v3339vBAUFGWvXrrXr76OPPjKCgoKMQ4cOGYZx85gEzIiZFOA+jBgxQj/++KPeffddRUVFqXTp0lq3bp26d++uTz755L76PnLkiJKTk9WqVSu75TdOI92wdetWPfHEEypfvrztL38XFxc1b95cW7ZssWv7v9cvPPTQQ8rKysp3bW3atNH333+vhQsXqn///qpcubK2bNmikSNHavjw4bYZpYSEBDVv3lweHh62bUNCQvTdd9+pZs2aio+PV2ho6E0zAh06dNCFCxd05MgR27KgoKB8H3dYWJiuXLmiyMhIvffee0pISFDTpk01dOjQu15wOnToUK1atUqrVq3SihUr9N5776lSpUq22RtJio+PV4UKFVS3bt2b6r969ap++eUXSVKZMmU0ZcoUxcfH67333tPAgQNVr169u77OO3bsUI0aNWwfjRs31t/+9jfVqFFDs2bNuuUxxMfHy9XVVc8888xNNUlyyF1hgKNw4Sxwn3x8fNS+fXu1b99ekrRv3z69+uqreuedd9ShQwf5+fndU783bjH19/e3W162bFm7ry9evKjjx4/f9vTM5cuXbf++cRrmBhcXl3t+Voa7u7uaNWumZs2aSbp+bcmUKVO0ceNGff/992rZsqUuXryogICA2/aRlpamP/3pTzctDwwMlCRdunTppmU35OW4Q0ND9fHHH2vp0qVatGiR5s2bp7Jly2rgwIHq06fPHY+vQoUKqlWrlu3r0NBQtWjRQuHh4ZozZ47mzZuntLS0m+q6Xf2NGjXSww8/rDNnztx03dHt1KhRQ6+//rqk69fBeHh46OGHH1bp0qVvu01aWpr8/Pzk5mb/6/3GuElPT8/TvgEzIKQA9+DcuXPq2rWrRowYoW7dutmtq169ul5++WUNGTJEv//++y1Dyo2/gK9du2a3/I+zGje2S05Otmtz8eJFu6+9vb1Vv359vfrqq7estUSJEnk7qDzq0aOHKlWqpGnTptktL1eunC2kJCYmqmXLlvL29r7lc0V++OEHVatWTT4+PrYLcf/owoULknTHgJfX474RpC5fvqxt27bp008/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SZPk5eWlChUqaPDgwfriiy+0ceNG+fr6qmfPnnJzc1OjRo0UGRmpZcuWObtMAABQyNycvUOr1Sp3d3e5u7vbllksFiUlJWnnzp0KCgqya1+lShWtWrXqjn1aLA4ptXix/PczrydMgTEJJzh27KjS0tLy1NZikSweJWRczZZh5H0fPj4+qlix0j1WWLw5PaQ8+eST8vT01LvvvqshQ4YoJSVFixYtsq0vWbKkXXtPT09lZWXdtj9//1JydeX63/vle/X6NUG+PqUUGOhdyNUAjEk4XlJSkho0CLVdE+korq6uOnv2rAIDAx26n6LI6SGlTJkyWrBggaZNm6bw8HA99thj6tSpk3bv3i1XV1dlZmbatb9y5YpKlSp12/5SUjL5K6sAXEzLtH1O8iD0ofAxJuF4Htq+fWeeZ1KOpWZp4rf7NaV9NVX088rzXnx8fCR5KCkp/R7rLJry8seH00NKdna2cnNz9emnn8ryn3SxfPlyValSRSEhIVqyZIld+8TERFWtWvWOfeZn2g23Yfz3M68nTIExCSd4/PG8n4bxOJ8uj59zFfxELQWXy9/sHmP43jg9pEjSCy+8oFdffVVRUVHau3ev5s2bp6FDh6p169Z6++23tXTpUvXs2VMJCQlat26dYmJiCqNMUzmRellZ2bkO6/9YyvVTakeTsxz2w+RVwk2P+ZW8e0MAAFQIIaVEiRKKiYnRtGnT9NZbbykgIEADBw7Uc889J0lavHixpk6dqtmzZ8vf318TJ05Uw4YNnV2mqZxIvayui3c4ZV+vxR1waP+r+4cRVAAAeVIoMylhYWFas2bNLdfVqlVLK1ascHJF5nZjBuWNZ4JVyT/v50Hz416vWs+roylZmhR3wKGzQQCAoqVQQgruTSV/L1Ur75i7HCyW6xcxJSWlc+4UAGAKXDIPAABMiZACAABMiZACAABMiZACAABMiZACAABMiZACAABMiZACAABMiZACAABMiZACAABMiZACAABMiZACAABMiZACAABMiZACAABMiZACAABMiZACAABMiZACAABMiZACAABMiZACAABMiZACAABMiZACAABMiZACAABMiZACAABMiZACAABMiZACAABMiZACAABMiZACAABMya2wCwDwYDqRellZ2bkO6/9YSpYk6WhylgzDYbuRVwk3PeZX0nE7AHDPCCkA8u1E6mV1XbzD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oLv505/+ZPv3ww8/rOzsbF28eNGuzalTp7R3717Vq1fPtsxqtcrV1VWSdOHCBT3yyCN22zz55JP3eFQAChszKQDuy48//qjQ0FBboLBYLKpSpYpeeeUVVa9eXfv27ZOLi4tycnJs26Smpt7Uzx+vEzl58qS8vLxuOlX00EMPqUGDBvr5559tH5s3b9bXX38t6Xq4OXPmjN027733ng4fPlxQhwvAiQgpAO5LWFiYAgICNG7cOB04cEA5OTnKyMhQbGysjh07pvDwcFWuXFmbN2/WlStXdOHCBX366ac39fP2228rLS1NZ8+e1QcffKDu3bvf1CYyMlK7du1SbGyscnNzdf78eb300kuaPn26JKlLly768ssv9euvv8pqtWr16tVatmyZ/Pz85OHhocuXL9/33UYAnIfTPQDui6enp5YvX64PP/xQgwcPVnJystzd3VWnTh0tWbJElStX1qhRozR58mQ1adJE5cqVU58+fZSQkGDXT2hoqNq1aycXFxe1b99eI0eOvGlfFSpU0MKFC/XOO+9oypQpcnV1VXh4uCZMmCDpeoi5dOmSRo8erQsXLqhKlSpasGCB/P39bWEqLCxMK1asuOnuIgDmYzF4cAAAE1u1apXmzZunTZs2FXYpAJyM0z0ATOvy5ctKTExUYGBgYZcCoBBwugeAafXr108nTpzQG2+8UdilACgEnO4BAACmxOkeAABgSoQUAABgSoQUAABgSoQUAABgSoQUAABgSoQUAABgSoQUAABgSoQUAABgSv8f4IxPRCaY3a0AAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 设置绘图风格\n",
    "plt.style.use('seaborn-darkgrid')\n",
    "\n",
    "# 绘制箱线图\n",
    "df.boxplot(column=['Math', 'Science', 'English'])\n",
    "\n",
    "# 添加标题和标签\n",
    "plt.title('Student Scores Box Plot')\n",
    "plt.xlabel('Subject')\n",
    "plt.ylabel('Scores')\n",
    "\n",
    "# 显示图表\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "2d424b9c",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.4"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": false,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
